/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Testes.classes;

import Banco.Classes.Arquivo;
import Banco.Classes.Professor;
import Banco.Classes.Turma;
import Banco.DAO.ArquivoDAO;
import Banco.DAO.MensagensDAO;
import Banco.DAO.professorDAO;

import enviosms.Mensagem;
import java.sql.SQLException;
import java.util.ArrayList;
import projetosms.err.ProfessorDoesntExistException;

/**
 *
 * @author Usuario
 */
public class TesteProfessor {

    /**
 * Retorna uma String contendo o respectivo atributo do professor passado como parâmetro.
 *
 * @param  matricula  o numero de matricula do professor
 * @param  atributo atributo que se deseja ter como retorno do aluno
 * @return      uma String contendo o atributo que se deseja
 *
 */
    public String getAtributoProfessor(String matricula, String atributo) throws ProfessorDoesntExistException {
        professorDAO profDAO = new professorDAO();
        Professor professor = profDAO.getProfessor(matricula);

        if (atributo.equalsIgnoreCase("nome")) {
            if (professor.getNome() == null) {
                throw new ProfessorDoesntExistException();
            } else {
                return professor.getNome();
            }
        }
        if (atributo.equalsIgnoreCase("login")) {
            if (professor.getLogin() == null) {
                throw new ProfessorDoesntExistException();
            } else {
                return professor.getLogin();
            }
        }
        if (atributo.equalsIgnoreCase("senha")) {
            if (professor.getSenha() == null) {
                throw new ProfessorDoesntExistException();
            } else {
                return professor.getSenha();
            }
        }
        if (atributo.equalsIgnoreCase("matricula")) {
            if (professor.getMatricula() == null) {
                throw new ProfessorDoesntExistException();
            } else {
                return professor.getMatricula();
            }
        }
        return null;
    }
/**
 * Esse metodo a partir dos dados de uma respectiva turma, retorna uma lista contendo
 * o corpo de mensagem de todas as mensagens enviadas para a respectiva turma.
 *
 * @param  curso  o nome do curso
 * @param  disciplina o nome da disciplina
 * @param  periodo  o numero do periodo
 * @param  turma  o numero da turma
 * @return    Uma lista contendo o contéudo textual das mensagens enviadas para a turma
 *
 */
    public ArrayList<String> getMensagensEnviadas(String curso, String disciplina, String periodo, String turma) throws SQLException{
        ArrayList<Mensagem> listaMensagens = new ArrayList<Mensagem>();
        ArrayList<String> corpoMsg = new ArrayList<String>();
        Turma turmaTeste = new Turma();
        turmaTeste.setCurso(curso);
        turmaTeste.setPeriodo(periodo);
        turmaTeste.setDisciplina(disciplina);
        turmaTeste.setTurma(turma);
        MensagensDAO msgDAO = new MensagensDAO();
        listaMensagens = msgDAO.getMensagensTurma(turmaTeste);
         for (int i = 0; i < listaMensagens.size(); i++) {
             corpoMsg.add(listaMensagens.get(i).getCorpoMsg());
         }
        return corpoMsg;
    }

/**
 * Esse metodo a partir dos dados de uma respectiva turma, retorna uma lista contendo
 * o nome dos arquivos enviados para a turma.
 *
 * @param  curso  o nome do curso
 * @param  disciplina o nome da disciplina
 * @param  periodo  o numero do periodo
 * @param  turma  o numero da turma
 * @return    Uma lista contendo nome dos arquivos enviados para a turma
 *
 */
    public ArrayList<String> getArquivosEnviados(String curso, String disciplina, String periodo, String turma){
        ArrayList<Arquivo> listaArquivos = new ArrayList<Arquivo>();
        ArrayList<String> nomeArquivos = new ArrayList<String>();
        Turma turmaTeste = new Turma();
        turmaTeste.setCurso(curso);
        turmaTeste.setPeriodo(periodo);
        turmaTeste.setDisciplina(disciplina);
        turmaTeste.setTurma(turma);
        ArquivoDAO arqDAO = new ArquivoDAO();
        listaArquivos = arqDAO.getTodosArquivosTurma(turmaTeste);
        for (int i = 0; i < listaArquivos.size(); i++) {
            nomeArquivos.add(listaArquivos.get(i).getNome());
        }
        return nomeArquivos;
    }
/**
 * Esse metodo tem como parametro o numero de matricula do professor.
 * Tem como retorno uma lista de disciplinas que o professor leciona.
 *
 * @param  matricula  o numero de matricula do professor
 * @return  um ArrayList contendo o nome das disciplinas
 *
 */
    public ArrayList<String> getTodasDisciplinasProfessor(String matricula) {
        professorDAO profDAO = new professorDAO();
        ArrayList<Turma> listaTurmas = new ArrayList<Turma>();
        ArrayList<String> listaDisciplinas = new ArrayList<String>();
        listaTurmas = profDAO.getTodasTurmas(matricula);
        for (int i = 0; i < listaTurmas.size(); i++) {
            listaDisciplinas.add(listaTurmas.get(i).getDisciplina());            
        }
    return listaDisciplinas;
    }

}
